/***************************************************************************//**
 * @file mac_fhss.h
 * @brief for mac 
 * @author ze .
 * @date  2022/7/03.
 * @copyright Copyright 
 ******************************************************************************/
#ifndef _MAC_FHSS_H_
#define _MAC_FHSS_H_

#include "stdint.h" 

#define RF_HOP_CHAN_NUM_DEFAULT 2

#define  RF_CHAN_FREQ_HOP_ENABLE

#define RF_CHAN_RESYNC_DEFAULT_NUMBER 6 //默认的备用信道，修改为6

#define  RF_CHAN_NO_HOP_FIXED_UNMBER  RF_CHAN_RESYNC_DEFAULT_NUMBER//与备用信道reSync chan相同  10 //无FHSS，固定信道时的信道号

#define RF_CHANNEL_HOP_SEQ_LEN  256 //跳频序列的长度，注意 该值需被整除5*2^8 整除!!，即被溢出值+1整除，范围2^n保险

#define RF_CHAN_NUM_868MHZ         20//支持的信道号最大个数，默认从0开始，最大值为256以下，根据当地法规有关
#define RF_CHAN_NUM_915MHZ         240//支持的信道号最大个数，默认从0开始，最大值为256以下，根据当地法规有关
#define RF_CHAN_NUM_433MHZ         17  //433.12-434.72MHz
#define RF_CHAN_NUM_915MHZ_RCM     120
#define RF_CHAN_NUM_433MHZ_WPC     30
typedef enum
{
  CHAN_TYPE_MAIN = 0,//主信道
  CHAN_TYPE_RESYNC, //备用信道
}CHAN_TYPE_E;

//typedef enum
//{
//  CHAN_NORMAL_MODE = 0,//主信道
//  CHAN_BURST_MODE, //备用信道
//}CHAN_MODE_E;

void initFhssSequence(uint32_t dwSystemId, uint8_t byOffset); //根据systemId 生成FHSS伪随机跳频序列
uint8_t autoCalculateMainChan(void);
uint32_t getNextMainChanUpdateTimerDeadLine();
uint8_t getAccessChan(CHAN_TYPE_E type);
void srand_(uint32_t seed);
uint16_t rand_(void);
#endif
